<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Extrude polygons for 3D indoor mapping</title>
    <meta
      name="viewport"
      content="initial-scale=1,maximum-scale=1,user-scalable=no"
    />
    <script src="../../lib/mapbox-gl.js"></script>
    <link href="../../lib/mapbox-gl.css" rel="stylesheet" />
    <script src="../../lib/axios.min.js"></script>
    <style>
      body {
        margin: 0;
        padding: 0;
      }
      #map {
        position: absolute;
        top: 0;
        bottom: 0;
        width: 100%;
      }
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script>
      let baseDataUrl = `http://${localStorage.getItem(
        "host"
      )}/mapbox-gl-js-offline-examples`;
      axios
        .get(
          baseDataUrl +
            `/resources/styles/${localStorage.getItem(
              "mbtilesStylesName"
            )}.json`
        )
        .then((res) => {
          let data = res.data;
          initMap(data);
        })
        .catch((err) => {
          console.error(err);
        });

      function initMap(style) {
        let map = new mapboxgl.Map({
          container: "map",
          center: [-87.61694, 41.86625],
          zoom: 15.99,
          pitch: 40,
          bearing: 20,
          style: style,
        });

        map.on("load", function () {
          map.addLayer({
            id: "room-extrusion",
            type: "fill-extrusion",
            source: {
              // GeoJSON Data source used in vector tiles, documented at
              // https://gist.github.com/ryanbaumann/a7d970386ce59d11c16278b90dde094d
              type: "geojson",
              data: baseDataUrl + "/data/geojson/indoor-3d-map.geojson",
            },
            paint: {
              // See the Mapbox Style Specification for details on data expressions.
              // https://docs.mapbox.com/mapbox-gl-js/style-spec/#expressions

              // Get the fill-extrusion-color from the source 'color' property.
              "fill-extrusion-color": ["get", "color"],

              // Get fill-extrusion-height from the source 'height' property.
              "fill-extrusion-height": ["get", "height"],

              // Get fill-extrusion-base from the source 'base_height' property.
              "fill-extrusion-base": ["get", "base_height"],

              // Make extrusions slightly opaque for see through indoor walls.
              "fill-extrusion-opacity": 0.5,
            },
          });
        });
      }
    </script>
  </body>
</html>
